package com.wll.controller;


import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wll.entity.Department;
import com.wll.mapper.DepartmentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 部门
 */
@RestController
@RequestMapping("department")
public class DepartmentController {

    @Autowired
    DepartmentMapper departmentMapper;

    /**
     * 获取数据列表
     *
     * @return
     */
    @RequestMapping("/list")
    public Object getList() {
        List<Department> departments = departmentMapper.selectAll();
        return departments;
    }


    /**
     *  实现一 分页 查询
     *
     *  返回详细的分页参数
     *  返回查询数据
     *
     *  "endRow": 5, //当前页面最后一个元素在数据库中的行号
     *   "firstPage": 1, //第一页
     *   "hasNextPage": true, //是否有下一页
     *   "hasPreviousPage": false, //是否有前一页
     *   "isFirstPage": true,//是否为第一页
     *   "isLastPage": false, //是否为最后一页
     *   "lastPage": 2, //最后一页是第几页
     *   "nextPage": 2,//下一页是第几页
     *   "pageNum": 1,//当前页
     *   "pageSize": 5,//每页的数量
     *   "pages": 2,//总页数
     *   "prePage": 0,//上一页
     *   "size": 5,//当前页的数量
     *   "startRow": 1,//当前页面第一个元素在数据库中的行号
     *   "total": 10,//总记录数
     *   "navigateFirstPage": 1,//首页
     *   "navigateLastPage": 2,//尾页
     *   "navigatePages": 8,//每页显示的页码个数
     *   "navigatepageNums": [ //页码数
     *     1,
     *     2
     *   ],
     *   "list": [ //数据 这里共有5条数据 数据库中有10条数据
     *     {
     *       "age": 1,
     *       "id": 1,
     *       "name": "1",
     *       "sex": "1"
     *     },
     *     {
     *       "age": 2,
     *       "id": 2,
     *       "name": "2",
     *       "sex": "2"
     *     },
     *     {
     *       "age": 3,
     *       "id": 3,
     *       "name": "3",
     *       "sex": "3"
     *     },
     *     {
     *       "age": 4,
     *       "id": 4,
     *       "name": "4",
     *       "sex": "4"
     *     },
     *     {
     *       "age": 5,
     *       "id": 5,
     *       "name": "5",
     *       "sex": "5"
     *     }
     *   ]
     * }
     * @return
     */
    @RequestMapping("/page")
    public Object getPage(@RequestParam(defaultValue = "1") Integer pageNumber,
                          @RequestParam(defaultValue = "10") Integer pageSize) {
        PageHelper.startPage(pageNumber, pageSize);
        //得到从pageNum开始的pageSize条数据
        List<Department> departments = departmentMapper.selectAll();
        //如果直接返回list，得到了分页的数据，如果添加下面步骤，返回pageInfo，则能得到包括list在内的分页信息
        PageInfo<Department> departmentPageInfo = new PageInfo<>(departments);
        return departmentPageInfo;
    }


    /**
     *  实现二 分页 查询
     *
     *  没有分页相关参数
     *  只返回了查询数据
     *
     * @return
     */
    @RequestMapping("/page2")
    public Object getPage2(@RequestParam(defaultValue = "1") Integer pageNumber,
                          @RequestParam(defaultValue = "10") Integer pageSize) {
        PageHelper.startPage(pageNumber, pageSize);
        //得到从pageNum开始的pageSize条数据
        Page<Department> departments = departmentMapper.selectPage();
        return departments;
    }


}
